﻿using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System;

namespace Tiger.Models
{

    #region 个人意见
    public class TGR_PrivateOpinion
    {
        // ID
        [Key]
        [JsonProperty("id")]
        public int ID { get; set; }
        // 用户ID
        [JsonProperty("emplId")]
        public string EmplID { get; set; }
        // 内容
        [JsonProperty("content")]
        public string Content { get; set; }
        // 创建时间
        public DateTime? CreateTime { get; set; }
        // 更新时间
        public DateTime? UpdateTime { get; set; }
    }
    #endregion

    #region 公共意见
    public class TGR_PublicOpinion
    {
        // ID
        [Key]
        [JsonProperty("id")]
        public int ID { get; set; }
        // 内容
        [JsonProperty("content")]
        public string Content { get; set; }
    }
    #endregion

    #region 消息提醒管理记录
    public class TGR_NotifyRecord
    {
        // ID
        [Key]
        [JsonProperty("id")]
        public int ID { get; set; }
        // 消息ID
        [JsonProperty("mid")]
        public string MessageID { get; set; }
        // 节点ID
        [JsonProperty("nid")]
        public string NodeKey { get; set; }
        // 发送人
        [JsonProperty("senders")]
        public string Senders { get; set; }
        // 提醒人
        [JsonProperty("receivers")]
        public string Receivers { get; set; }
        // 创建时间
        public DateTime? CreateTime { get; set; }
        // 更新时间
        public DateTime? UpdateTime { get; set; }
    }
    #endregion

    #region 新意见
    public class TGR_NewOpinion
    {
        // ID
        [Key]
        [JsonProperty("id")]
        public int ID { get; set; }
        // 用户ID
        [JsonProperty("emplID")]
        public string EmplID { get; set; }
        // 消息ID
        [JsonProperty("mid")]
        public string MessageID { get; set; }
        // 节点ID
        [JsonProperty("nid")]
        public string NodeKey { get; set; }
        // 意见内容
        [JsonProperty("opinion")]
        public string Opinion { get; set; }
        // 意见排序（同一个用户的排序）
        public int order { get; set; }
        // 创建时间
        public DateTime? CreateTime { get; set; }
        // 更新时间
        public DateTime? UpdatedTime { get; set; }
    }
    #endregion

    #region 已发送提醒的记录
    public class TGR_SendNotifyRecord
    {
        // ID
        [Key]
        [JsonProperty("id")]
        public int ID { get; set; }
        // 用户ID
        [JsonProperty("emplID")]
        public string EmplID { get; set; }
        // 消息ID
        [JsonProperty("mid")]
        public string MessageID { get; set; }
        // 已读
        public bool AlreadyRead { get; set; }
        // 创建时间
        public DateTime? CreateTime { get; set; }
        // 更新时间
        public DateTime? UpdatedTime { get; set; }
    }
    #endregion

    #region 附件与预览关系
    public class TGR_AttachPreview
    {
        // ID
        [Key]
        [JsonProperty("id")]
        public int ID { get; set; }
        // 附件ID
        public string AttachID { get; set; }
        // 预览ID
        public string PreviewID { get; set; }
        // 总数
        public int PageCount { get; set; }
    }
    #endregion

    #region 日历提醒与Hangfire对应关系
    public class TGR_CalendarTask
    {
        // ID
        [Key]
        public int ID { get; set; }
        // HangFire 任务ID
        public string JobID { get; set; }
        // 提醒ID
        public string TaskID { get; set; }
    }
    #endregion

    #region 领导审批意见
    public class TGR_LeaderOpinion
    {
        [Key]
        public int ID { get; set; }
        // 消息ID
        public string MessageID { get; set; }
        // 发送人（领导ID）
        public string Sender { get; set; }
        // 发送的意见
        public string Opinion { get; set; }
        // 接收者（文电科转发ID）
        public string Receiver { get; set; }
        // 发送时间
        public DateTime CreateTime { get; set; }
        // 是否已查看
        public bool Checked { get; set; }
    }
    #endregion

    #region 收藏公文
    public class TGR_FavoriteMessage
    {
        [Key]
        public int ID { get; set; }
        // 消息ID
        public string MessageID { get; set; }
        // 收藏用户
        public string EmplID { get; set; }
        // 公文时间
        //public DateTime MessageTime { get; set; }
        // 收藏时间
        public DateTime CreateTime { get; set; }
    }
    #endregion

    #region 工作流处理记录表
    public class TGR_HandleRecord
    {
        // Key
        [Key]
        public int ID { get; set; }
        // 消息ID
        public string MessageID { get; set; }
        // 节点ID
        public string NodeKey { get; set; }
        // 节点名称
        public string NodeName { get; set; }
        // 指派用户（之后的处理人）
        public string UserID { get; set; }
        // 创建时间
        public DateTime CreateTime { get; set; }
        // 处理时间
        public DateTime? HandleTime { get; set; }
        // 处理人部门ID
        public string HandlerDeptID { get; set; }
    }
    #endregion

    #region 拟办意见修改记录表
    public class TGR_NiBanOpinion
    {
        // ID
        [Key]
        [JsonProperty("id")]
        public int ID { get; set; }
        // 用户ID
        [JsonProperty("emplID")]
        public string EmplID { get; set; }
        // 消息ID
        [JsonProperty("mid")]
        public string MessageID { get; set; }
        // 意见内容
        [JsonProperty("opinion")]
        public string Opinion { get; set; }
        // 创建时间
        public DateTime? CreateTime { get; set; }
        // 更新时间
        public DateTime? UpdatedTime { get; set; }
    }
    #endregion

    #region 数据库上下文
    /// <summary>
    /// 科室资金类别
    /// </summary>
    public class WhDbContext : DbContext
    {
        // 个人意见
        public DbSet<TGR_PrivateOpinion> PrivateOpinion { get; set; }
        // 公共意见
        public DbSet<TGR_PublicOpinion> PublicOpinion { get; set; }
        // 消息提醒管理
        public DbSet<TGR_NotifyRecord> NotifyRecord { get; set; }
        // 发送提醒的记录
        public DbSet<TGR_SendNotifyRecord> SendNotifyRecord { get; set; }
        // 新意见
        public DbSet<TGR_NewOpinion> NewOpinion { get; set; }
        // 附件预览
        public DbSet<TGR_AttachPreview> AttachPreview { get; set; }
        // 提醒与Hang fire
        public DbSet<TGR_CalendarTask> CalendarTask { get; set; }
        // 领导审批意见
        public DbSet<TGR_LeaderOpinion> LeaderOpinion { get; set; }
        // 收藏公文
        public DbSet<TGR_FavoriteMessage> FavoriteMessage { get; set; }
        // 工作流处理记录表
        public DbSet<TGR_HandleRecord> HandleRecord { get; set; }
        // 拟办意见修改表
        public DbSet<TGR_NiBanOpinion> NiBanOpinion { get; set; }
    }
    #endregion
}
